﻿using System;
using System.Collections.Generic;
using System.ComponentModel;
using System.Data;
using System.Drawing;
using System.Linq;
using System.Text;
using System.Windows.Forms;
using AgendaManager.AgendaService;

namespace AgendaManager
{
    public partial class frmSemana : Form
    {
        List<Semana> Semanas { get; set; }

        public Obra Obra { get; set; }
        public Carpeta Carpeta { get; set; }



        public frmSemana()
        {
            InitializeComponent();
        }

        private void frmSemana_Load(object sender, EventArgs e)
        {
            if (Carpeta != null)
            {
                txObra.Text = Obra.Nombre;
                txCarpeta.Text = Carpeta.Tipo;
                
                Semanas = ConnectHelper.ws.RetrieveEntitiesWhere(new Semana(),
                    "CarpetaId =" + Carpeta.Id.ToString()).Cast<Semana>().ToList();

                gvSemanas.DataSource = null;
                gvSemanas.DataSource = Semanas;
                gvSemanas.Columns["Id"].Visible = false;
                gvSemanas.Columns["Nombre"].Width = 546;
            }
        }

        internal void SetValues(Obra obra, Carpeta carpeta)
        {
            try
            {
                Obra = obra;
                Carpeta = carpeta;

                txObra.Text = Obra.Nombre;
                txCarpeta.Text = Carpeta.Tipo;
                
                Semanas = ConnectHelper.ws.RetrieveEntitiesWhere(new Semana(),
                    "CarpetaId =" + Carpeta.Id.ToString()).Cast<Semana>().ToList();

                gvSemanas.DataSource = null;
                gvSemanas.DataSource = Semanas;
                gvSemanas.Columns["Id"].Visible = false;
                gvSemanas.Columns["Nombre"].Width = 546;
            }
            catch (Exception)
            {
                MessageBox.Show("Error abriendo las carpetas.",
                            "Carpeta.",
                            MessageBoxButtons.OK,
                            MessageBoxIcon.Error);
            }
        }

        private void btnSeleccionar_Click(object sender, EventArgs e)
        {
            if (gvSemanas.SelectedRows.Count == 1)
            {
                Semana semana = new Semana();
                semana = (Semana)gvSemanas.SelectedRows[0].DataBoundItem;

                var f = FormsHelper.ShowForm<frmSubCarpeta>();
                f.SetValues(Obra, Carpeta, semana);
                

                //using (frmSubCarpeta f = new frmSubCarpeta())
                //{
                //    f.Obra = Obra;
                //    f.Carpeta = Carpeta;
                //    f.Semana = semana;
                //    f.Show();
                //}

            }            
            else
            {
                MessageBox.Show("Debe seleccionar una Semana.",
                            "Semana.",
                            MessageBoxButtons.OK,
                            MessageBoxIcon.Exclamation);
            }
        }

        private void btAdd_Click(object sender, EventArgs e)
        {
            if (Carpeta != null)
            {
                using (frmNuevaSemana f = new frmNuevaSemana())
                {
                    f.Semana = new Semana();
                    f.Semana.CarpetaId = Carpeta.Id;

                    if (f.ShowDialog() == System.Windows.Forms.DialogResult.OK)
                    {
                        Semanas = ConnectHelper.ws.RetrieveEntitiesWhere(new Semana(),
                            "CarpetaId =" + Carpeta.Id.ToString()).Cast<Semana>().ToList();

                        gvSemanas.DataSource = null;
                        gvSemanas.DataSource = Semanas;
                        gvSemanas.Columns["Id"].Visible = false;
                        gvSemanas.Columns["Nombre"].Width = 546;
                    }
                }
            }
        }

        private void btEdit_Click(object sender, EventArgs e)
        {
            if (Carpeta != null)
            {
                if (gvSemanas.SelectedRows.Count == 1)
                {
                    Semana semana = (Semana)gvSemanas.SelectedRows[0].DataBoundItem;

                    using (frmNuevaSemana f = new frmNuevaSemana())
                    {
                        f.Semana = semana;

                        if (f.ShowDialog() == System.Windows.Forms.DialogResult.OK)
                        {
                            Semanas = ConnectHelper.ws.RetrieveEntitiesWhere(new Semana(),
                                "CarpetaId =" + Carpeta.Id.ToString()).Cast<Semana>().ToList();

                            gvSemanas.DataSource = null;
                            gvSemanas.DataSource = Semanas;
                            gvSemanas.Columns["Id"].Visible = false;
                            gvSemanas.Columns["Nombre"].Width = 546;
                        }
                    }
                }
            }
        }

        private void btRemove_Click(object sender, EventArgs e)
        {
            if (gvSemanas.SelectedRows.Count == 1)
            {
                Semana semana = (Semana)gvSemanas.SelectedRows[0].DataBoundItem;

                if (MessageBox.Show("Eliminando la semana estará eliminando todo su contenido, está seguro de hacerlo?.",
                            "Semana.",
                            MessageBoxButtons.OKCancel,
                            MessageBoxIcon.Exclamation) == 
                            System.Windows.Forms.DialogResult.OK)
                {
                    if (ConnectHelper.ws.DeleteEntity(semana))
                    {
                        MessageBox.Show("La semana ha sido eliminada exitosamente.",
                            "Semana.",
                            MessageBoxButtons.OKCancel,
                            MessageBoxIcon.Exclamation);

                        Semanas = ConnectHelper.ws.RetrieveEntitiesWhere(new Semana(),
                                "CarpetaId =" + Carpeta.Id.ToString()).Cast<Semana>().ToList();

                        gvSemanas.DataSource = null;
                        gvSemanas.DataSource = Semanas;
                        gvSemanas.Columns["Id"].Visible = false;
                        gvSemanas.Columns["Nombre"].Width = 546;
                    }
                }
            }
        }

        private void btnCancelar_Click(object sender, EventArgs e)
        {
            this.DialogResult = System.Windows.Forms.DialogResult.Cancel;
            this.Close();
        }
    }
}
